From d8f3119f3092b5286c8302569d667f71b070f634 Mon Sep 17 00:00:00 2001 From: Josselin Mouette Date: Sun, 25 May 2008 14:19:16 +0000 Subject: [PATCH] check that tracker is actually working before using it. Fixes bug #479197. * gtk/gtksearchenginetracker.c: (_gtk_search_engine_tracker_new): check that tracker is actually working before using it. Fixes bug #479197. svn path=/trunk/; revision=20149 --- ChangeLog | 8 ++++++++ gtk/gtksearchenginetracker.c | 15 +++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/ChangeLog b/ChangeLog index 9970dff51e..da64fa1dbf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-05-25 Josselin Mouette + + reviewed by: Matthias Clasen + + * gtk/gtksearchenginetracker.c: (_gtk_search_engine_tracker_new): + check that tracker is actually working before using it. Fixes + bug #479197. + 2008-05-25 Sven Neumann * gtk/gtkdrawingarea.c (gtk_drawing_area_realize) diff --git a/gtk/gtksearchenginetracker.c b/gtk/gtksearchenginetracker.c index 7d357f202e..36c90c38c1 100644 --- a/gtk/gtksearchenginetracker.c +++ b/gtk/gtksearchenginetracker.c @@ -35,6 +35,7 @@ typedef void (*TrackerArrayReply) (char **result, GError *error, gpointer user_d static TrackerClient * (*tracker_connect) (gboolean enable_warnings) = NULL; static void (*tracker_disconnect) (TrackerClient *client) = NULL; +static int (*tracker_get_version) (TrackerClient *client, GError **error) = NULL; static void (*tracker_cancel_last_call) (TrackerClient *client) = NULL; static void (*tracker_search_metadata_by_text_async) (TrackerClient *client, @@ -56,6 +57,7 @@ static struct TrackerDlMapping #define MAP(a) { #a, (gpointer *)&a } MAP (tracker_connect), MAP (tracker_disconnect), + MAP (tracker_get_version), MAP (tracker_cancel_last_call), MAP (tracker_search_metadata_by_text_async), MAP (tracker_search_metadata_by_text_and_location_async), @@ -285,6 +287,7 @@ _gtk_search_engine_tracker_new (void) { GtkSearchEngineTracker *engine; TrackerClient *tracker_client; + GError *err = NULL; open_libtracker (); @@ -296,6 +299,18 @@ _gtk_search_engine_tracker_new (void) if (!tracker_client) return NULL; + if (!tracker_get_version) + return NULL; + + tracker_get_version (tracker_client, &err); + + if (err != NULL) + { + g_error_free (err); + tracker_disconnect (tracker_client); + return NULL; + } + engine = g_object_new (GTK_TYPE_SEARCH_ENGINE_TRACKER, NULL); engine->priv->client = tracker_client; -- 2.30.2